if (!jsx3.lang.Class.forName("ux.cdb.admin.provRcpPkg.ProvRcpPkg")) {
    /**
     * Define the <code>name of class</code> class.
     * This class inherit from <code>jsx3.gui.Block<code> GUI class.
     */
    jsx3.Class.defineClass(
            "ux.cdb.admin.provRcpPkg.ProvRcpPkg",
            ux.megatron.gui.Block,
            null,
            function (objRoot) {
                /**
                 * This method will be called after UI file has deserialized.
                 */
                objRoot.prototype.onAfterDeserialize = function() {
                    this.disableEdit();
                    this.disableDelete();
                    this.disableApprove();
                    this.disableReport();
                };
                objRoot.prototype.disableEdit = function() {
                    this.getDescendantOfName("btn_Edit").setEnabled(jsx3.gui.Form.STATEDISABLED);
                };
                objRoot.prototype.disableDelete = function() {
                    this.getDescendantOfName("btn_Delete").setEnabled(jsx3.gui.Form.STATEDISABLED);
                };
                objRoot.prototype.disableApprove = function() {
                    this.getDescendantOfName("btn_Approve").setEnabled(jsx3.gui.Form.STATEDISABLED);
                };
                objRoot.prototype.disableReport = function() {
                    this.getDescendantOfName("btn_Report").setEnabled(jsx3.gui.Form.STATEDISABLED);
                };
                objRoot.prototype.enableEdit = function() {
                    this.getDescendantOfName("btn_Edit").setEnabled(jsx3.gui.Form.STATEENABLED);
                };
                objRoot.prototype.enableDelete = function() {
                    this.getDescendantOfName("btn_Delete").setEnabled(jsx3.gui.Form.STATEENABLED);
                };
                objRoot.prototype.enableApprove = function() {
                    this.getDescendantOfName("btn_Approve").setEnabled(jsx3.gui.Form.STATEENABLED);
                };
                objRoot.prototype.enableReport = function() {
                    this.getDescendantOfName("btn_Report").setEnabled(jsx3.gui.Form.STATEENABLED);
                };
                objRoot.prototype.onProvPkgSelected = function(objMtx, objEVENT, strRECORDID, objCOLUMN){
                    this.showContractRcpPkg(strRECORDID);
                };
                objRoot.prototype.showContractRcpPkg = function(strRECORDID){
                    var _showContractRcpPkg = function(){
                        //TODO:
                    };
                    if(!this.getDescendantOfName("blk_ContractRcpPkg")){
                        this.loadContractRcpPkg(_showContractRcpPkg);
                    } else {
                        this.getDescendantOfName("blk_ContractRcpPkg").setDisplay(jsx3.gui.Block.DISPLAYBLOCK);
                    }
                };
                objRoot.prototype.loadContractRcpPkg = function(callback){
                    var me = this;
                    ux.megatron.Main.loadUIResourceAsync(this.getDescendantOfName("pan_ContractRcpPkg"), "ux.cdb.admin", "ux/cdb/admin/provRcpPkg/ui/ContractRcpPkg.xml", me, callback);
                };
            }
    );
}